package tg.game.lottery.crawler;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.nutz.lang.Strings;

import com.alibaba.fastjson.JSON;

/**
 * opencai 的解析器
 * @author NKW
 *
 */
public class OpenCaiLotterParser implements LotteryParser {
	private final static Map<String, String> gidmap = new HashMap<String, String>();
	static{//本映射表是每种解析必须的，只要改id，value都是固定的
		gidmap.put("bjpk10", GID_BJPK10);//北京PK10
		gidmap.put("cqssc", GID_CQSSC);//重庆时时彩
		gidmap.put("cqklsf", GID_CQKLSF);//重庆快乐十分
		gidmap.put("gdklsf", GID_GDKLSF);//广东快乐十分
		gidmap.put("tjklsf", GID_TJKLSF);//天津快乐十分
		gidmap.put("gxklsf", GID_GXKLSF);//广西快乐十分
		gidmap.put("shssl", GID_SHSSL);//福彩时时乐 上海
		gidmap.put("tjssc", GID_TJSSC);//天津时时彩
		gidmap.put("bjkl8", GID_BJKL8);//北京快乐8
		gidmap.put("jsk3", GID_JSK3);//江苏骰宝
		gidmap.put("gd11x5", GID_GD11X5);//广东11选5
		gidmap.put("jx11x5", GID_JX11X5);//江西11选5
		gidmap.put("sd11x5", GID_SD11X5);//山东11选5
		gidmap.put("mlaft", GID_MLAFT);//幸运飞艇
		gidmap.put("fc3d", GID_FC3D);//福彩3D
		gidmap.put("pl3", GID_PL3);//体彩P3
		gidmap.put("cakeno",GID_JNDKENO);//加拿大卑斯快乐8 - 加拿大PC蛋蛋
	}
	@Override
	public List<Map<String, String>> parseLottery(String webContent) {
		List<Map<String, String>> ret = new ArrayList<Map<String, String>>();
		// json内容
		Map<String,Object> map = JSON.parseObject(webContent, Map.class);
		List<Map> datalist = (List<Map>)map.get("data");
		for(Map m : datalist){
			String lottery_content = (String)m.get("open_result");
			if(Strings.isNotBlank(lottery_content)){
				String gid = gidmap.get(m.get("code"));//先解出游戏id，并转换成本地统一的游戏id，
				if(null==gid) continue;//如果没有游戏id，那就是不合法，不做，跳开
				String round_id = (String)m.get("open_phase");//解出期数
				String open_time = (String)m.get("open_time");				
				switch (gid) {//特殊加工抓到的奖，或许要另存到其他字段 ，这个看具体应用
					case GID_BJKL8:
						if (lottery_content.contains("+")){
							//如果是北京快乐8的 有带  +01这种飞盘号，要去掉
							lottery_content = lottery_content.substring(0, lottery_content.indexOf("+", 0));
						}
						break;
					default:
						break;
				}
				Map<String, String> gameLottery = new HashMap<>();
				gameLottery.put(KEY_GID, gid);
				gameLottery.put(KEY_ROUND_ID, round_id);
				gameLottery.put(KEY_LOTTERY_CONTENT, lottery_content);
				gameLottery.put(KEY_OPEN_TIME, open_time);
				ret.add(gameLottery);
			}
		}
		return ret;
	}

}
